package com.songtech.store.service;

import com.github.pagehelper.PageInfo;
import com.songtech.store.bean.Store;
import com.songtech.store.bean.StoreVo;

import java.util.List;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: RENTIE
 * Date: 2018-06-19 14:30
 */
public interface StoreService {
    /**
     * 入库管理列表查询
     * @param map 查询条件封装map
     *           companyCode 厂商编号
     *            productCode 产品名称编号
     *           modelNumber 产品型号
     *           page（当前页）
     *           limit（每页个数）
     *            imei（终端标识码）
     *            storeRegion(库房位置)
     *            startTime（条件开始时间）
     *            endTime （条件结束时间）
     * @return
     * @throws Exception
     */
    PageInfo<Store> selectInStoreList(Map<String, String> map) throws Exception;

    /**
     * 出库管理列表查询
     * @param map 查询条件封装map
     *   companyCode 厂商编号
     *   productCode 产品名称编号
     *   modelNumber 产品型号
     *          page（当前页）
     *           limit（每页个数）
     *            imei（终端标识码）
     *            phone(库房位置)
     *            saleChannel（销售渠道）
     *            startTime（条件开始时间）
     *            endTime （条件结束时间）
     * @return
     * @throws Exception
     */
    PageInfo<Store> selectOutStoreList(Map<String, String> map) throws Exception;

    /**
     * 入库
     * @param record
     * @return
     */
    Integer insertSelective(Store record)throws Exception;

    /**
     * 出库
     * @param record
     * @return
     */
    Integer updateByImeiSelective(Store record)throws Exception;

    /**
     * 出入库管理编辑
     * @param record
     * @return
     */
    Integer updateByPrimaryKeySelective(Store record);

    /**
     * 出入库管理详情查看
     * @param id
     * @return
     */
    Store selectByPrimaryKey(Long id);

    /**
     * 出入库记录详情
     * @param map
     *          page（当前页）
     *           limit（每页个数）
     *           status  出入库状态
     *          operator 出入库操作人
     *          unitPrice 出入库单价
     * @return
     */
    PageInfo<Store> selectRecordDetailsList(Map<String, String> map);


    /**
     * 查询设备总量
     * @param map
     * @return
     */
    int selectAllDevice(Map<String,String> map);

    /**
     *查询终端列表详情
     * @param map
     * @return
     */
    PageInfo<StoreVo> deviceList(Map<String,String> map)throws Exception;

    /**
     * 设备已卖出量
     * @param map
     * @return
     */
    int deviceOut(Map<String, String> map)throws Exception;

    /**
     * 今日设备已卖出量
     * @param map
     * @return
     */
    int deviceTodayOut(Map<String, String> map)throws  Exception;

    /**
     * 查询设备库存量
     * @param map
     * @return
     * @throws Exception
     */
     int deviceInventory(Map<String, String> map)throws  Exception;


    /**
     * 几天前设备卖出数据
     * @param map
     * @return
     */
    List<Store> deviceOutByDay(Map<String, Object> map);

    /**
     * 几天前设备数据
     * @param map
     * @return
     */
    List<Store> deviceAllByDay(Map<String, Object> map);

    Map<String,Object> deviceByProvince(Map<String, String> map) throws  Exception;
}
